\section{Systementwurf}

\subsection{Klassendiagramm}
\includepdf[pages=-, landscape=true]{./PDF/KD.pdf}
\subsection{Komponentenübersicht}
\begin{itemize}
\item Klasse ''Object'': Dient als gemeinsame Basisklasse aller Klassen.

\item Klasse ''IRead'': Interface wird von AddressManager implementiert, damit die Reader Daten in den AddressManager einfügen können.
\item Klasse ''IWrite'': Interface wird von AddressManager implementiert, damit die Writer zugriff auf die Daten des AddressManagers haben.

\item Klasse ''Person'': Repräsentiert eine Person (Vorname, Nachname, Index der Adresse)
\item Klasse ''Address'': Repräsentiert eine Adresse (Straße, Stadt, Hausnummer, PLZ)

\item Klasse ''Reader'': Basisklasse für alle konkreten Reader. Beinhaltet die Template Method.
\item Klasse ''AddressReader'': Konkreter Reader zum einlesen von Dateien die Adressen beinhalten. Implementiert die Template Method vom Reader.
\item Klasse ''PersonReader'': Konkreter Reader zum einlesen von Dateien die Personen beinhalten. Implementiert die Template Method vom Reader.

\item Klasse ''Writer'': Basisklasse für alle Writer. Beinhaltet die Template Method.
\item Klasse ''AsciiWriter'': Konkreter Writer welcher Ascii Dateien schreibt. Implementiert die Template Method von Writer.
\item Klasse ''HtmlWriter'': Konkreter Writer welcher HTML Dateien schreibt. Implementiert die Template Method von Writer.

\item Klasse ''AddressManager'': Verwaltet Adressen, Personen und deren Verknüpfung.

\end{itemize}